<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // function fn(arg) {
    //     console.log(arg);
    // }
    // fn(1);
    // fn([1, 2, 3]);
    // fn(function () {  //函数可以作为参数 到另一个函数中(被该函数的形参接收 可以通过形参调用  -> 至于什么时候调用 -> 看需求)
    //     console.log(1111);
    // });



</script>
<script>
    // 数组的遍历方法 -> 官方给定专门遍历数组的方法


    // list.push(10);  push是数组的方法 10是实际参数

    // 将函数作为参数(实参)传入到另一个函数中  => 回调函数(callback)

    // map(callback)  数组映射 =>  根据原数组得到一个新数组
    // 传入一个回调函数, 每次循环时执行传入的回调函数(期望循环执行的内容),接收回调函数的返回值,放到新数组中,返回新数组 
    // 回调函数有三个参数function(item, index, array){}
    // item 循环的当前元素
    // index 循环的当前下标 
    // array 原数组


    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // list.map(function (item, index, array) { // 形参
    //     console.log(item, index, array);
    // })

    var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    var result = list.map(function (item, index, array) { // 形参
        console.log(item, index, array);
        return item * 10;
    })
    console.log(result);





    // 流程解析
    function myMap() {
        var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
        var fn = function (item, index, array) { // 形参
            console.log(item, index, array);
        }

        var arr = [];
        for (var i in list) {
            // list[i]  循环的当前元素
            // i 循环的当前下标
            // list  原数组
            var res = fn(list[i], i, list); //实际参数
            arr.push(res);
        }
        // console.log(arr);
        return arr;
    }

    // filter
    // some
    // every

    // 数组排序 sort

</script>

</html>